Overview

This project studies the association between surgical utilization and presidential election results at the United States county-level in 2012 and 2016. The data sources that I’ll be using for the project are the Dartmouth Atlas website, MIT’s Election Lab website, the USDA Economic Research Service’s Atlas of Rural and Small-Town America website, the County Health Rankings and Roadmaps website, the Bureau of Economic Analysis, and the National Bureau of Economic Research.

Advisors:
Rachel R. Kelz, MD, MSCE, MBA, FACS : Professor of Surgery, University of Pennsylvania
Mark D. Neuman, MD, MSc: Associate Professor of Anesthesiology, University of Pennsylvania
Luke Keele, PhD (Political Science): Associate Professor of Applied Statistics, University of Pennsylvania

The GitHub repository may be found here.

Introduction

As of 2014, over 10 million inpatient surgical procedures are performed each year in the United States,1 accounting for 29% of all inpatient admissions and 49% of hospital revenue.2 While there is evidence to suggest that surgical outcomes have improved over time,3 the decision to operate, when other alternative treatment options may exist, remains an understudied concept and likely has an enormous impact on healthcare costs and outcomes. Although there are certainly occasions when surgery is the only reasonable treatment option available, significant variation in surgical decision-making and utilization exists across the United States,4–6 suggesting that operative treatment decisions may be influenced by factors beyond unquestionable medical necessity. These factors may include surgeon experience, training, geographic/socioeconomic indicators, regional supply of surgeons, diffusion of technology, and perhaps other less observable characteristics such as surgeons’ personal preferences and beliefs.6,7 Recent research suggests that physician specialties may, in fact, be associated with political party affiliation,8 with surgeons more likely to vote Republican. In medical situations where multiple treatment options exist, surgical intervention is often considered a more “aggressive” approach. Furthermore, conservatism has been linked with more aggressive approaches to decision-making.9 While party affiliation & specialty trends may continue to change as more women (who, per the Sanger-Katz article, more often vote Democratic) enter the surgical workforce, this nonetheless offers the opportunity to study historical trends in surgical decision-making and utilization in the context of politics. Therefore, the objective of this study is to determine if rates of surgical utilization at the county level demonstrate an association with presidential election results from 2012 and 2016.

My primary hypothesis is that, after controlling for prior vote rates, surgical workforce, socio-economic, and economic factors, higher overall rates of surgical utilization will be associated with higher rates of Republican voting share in the following year’s election. I have two secondary hypotheses related to individual procedures: 1a) Due to greater variation (per the Dartmouth Atlas report) and a perceived greater elective nature of transurethral resection of the prostate (TURP) and back surgeries, I anticipate this association between surgical utilization and election results to be present for these specific procedures. 1b) I do not anticipate a significant association between utilization rates and election results for hip fracture and coronary artery bypass graft (CABG) procedures due to less variation (again, per Dartmouth Atlas) and a perceived less elective nature.

This project combines methods, theory, and input from the fields of health services research, surgery, and political science. At a time when both health care and political beliefs in the United States are fraught with divisiveness, patients faced with the decision of whether or not to undergo a surgical procedure might assume (or, at the very least, hope) that their providers’ recommendations for medical treatment will be based solely on the best-available treatment knowledge and guidelines, regardless of location or provider. While this project won’t seek to be definitive in studying the impact of physician beliefs on patient care, the results of this project may help shed some further light on potential factors associated with variations observed in surgical utilization across the United States.

Methods

Data Sources

The primary datasets used in this project are the longitudinal files for surgical discharges offered by the Dartmouth Atlas website, containing county-level information on the number of surgical discharges per 1,000 Medicare enrollees in a given year, and the MIT Election Lab datasets offering county-level Presidential election results from 2000-2016. Subset analyses were performed for TURP, back, hip fracture, and coronary artery bypass graft (CABG) surgeries given their hypothetical levels of aggression: TURP and back surgeries being a potentially more aggressive treatment option while CABG and hip fracture surgeries, although severe, being either more-regulated or less-variant treatment options. These data were augmented by other county-level economic, socio-economic, and surgeon workforce factors that have either been used in prior literature or suggested by my project advisors for inclusion in the multivariable linear regression models. Before loading the data, first I loaded all the packages necessary to run the commands in this Markdown file:

library(rbbt)
library(tidyverse)
library(usmap)
library(ggplot2)
library(reshape2)
library(dplyr)
library(stringr)
library(modelsummary)
library(jtools)
library(tidyr)
library(doBy)
library(RColorBrewer)
library(cowplot)
library(sjPlot)
library(sjmisc)
library(sjlabelled)
library(gtsummary)
library(table1)
library(gt)
library(ggpubr)
library(readstata13)
library(readxl)
theme_gtsummary_compact(set_theme = TRUE)

Next, I downloaded and stored the CSV files used for my analyses. Below are links & instructions to download the data, along with the corresponding R code to import the data after all files have been downloaded to the working directory:

  • Longitudinal surgical discharge data from Dartmouth Atlas: Download and unzip
  • MIT Election Lab: Download in CSV format
  • County Health Rankings from 2011: Download
  • County Health Rankings from 2012: Download
  • County Health Rankings from 2015: Download
  • County Health Rankings from 2016: Download
  • Zipcode to FIPS Crosswalk:Download Site
  • __National Board of Economic Research (NBER)’s National Plan and Provider Enumeration System (NPPES) website for Physician NPI Codes:
  • Rural Atlas data for income measures: Download and use income.csv within the zip file
  • GDP growth by county download instructions:
    1. Navigate to https://apps.bea.gov/itable/iTable.cfm?ReqID=70&step=1
    2. Click GROSS DOMESTIC PRODUCT (GDP) BY COUNTY & METROPOLITAN AREA
    3. Click CAGDP1
    4. Select County, then Next Step
    5. Select All Counties in the U.S., then Next Step
    6. For ‘Statistic’ select “Real GDP” and for ‘Unit of Measure’ select “Percent change from preceding period”, then Next Step
      NOTE: Percent change is used as a measure of growth for each county as opposed to a hard GDP value
      NOTE: Real GDP is used instead of current dollar because current dollar values may change depending on when the data is downloaded
    7. Multi-select 2012 and 2016 (using CTRL or CMD), then Next Step
    8. Select Download CSV
    9. Rename downloaded file to gdp_bea_county_12_16.csv
# Set working directory and store all downloaded data locally for importing
setwd("/Users/chris/Documents/MBMI/BMIN 503/BMIN503_Final_Project/")

# Zipcode to FIPS County crosswalk: Import from Stata v13
zip_to_fips <-read.dta13("ZIP5_County_Crosswalk.dta") %>%
  mutate(fips=str_pad(county, 5, pad = "0"),
         ploczip=str_pad(zip5,5,pad="0")) %>%
  select(fips, ploczip, state)

# Read-in NPI files -- only read-in those with Entity=1 value (indicating _Individual_ NPI instead of Organization)
npi_entity1_2011<-read.csv("entity20117.csv") %>% filter(entity==1) %>% select(npi)
npi_entity1_2015<-read.csv("entity201512.csv") %>% filter(entity==1) %>% select(npi)
npi_pzip_2011<-read.csv("ploczip20117.csv")
npi_pzip_2015<-read.csv("ploczip201512.csv")
npi_ptax2086_2011<-read.csv("ptaxcode20117.csv")
npi_ptax2086_2015<-read.csv("ptaxcode201512.csv")


# Dartmouth data takes a while to load so this code prevents loading again if it already exists
if(exists("dartmouth") == FALSE) {
  dartmouth<-read.csv("county_medutil_6599ffs.csv", header=TRUE)
}
election<-read.csv("countypres_2000-2016.csv", header=TRUE)
cty_rank_2011<-read.csv("analytic_data2011.csv", header=TRUE, skip=1, sep=",")
cty_rank_2012<-read.csv("analytic_data2012.csv", header=TRUE, skip=1, sep=",")
cty_rank_2015<-read.csv("analytic_data2015.csv", header=TRUE, skip=1, sep=",")
cty_rank_2016<-read.csv("analytic_data2016.csv", header=TRUE, skip=1, sep=",")
rural_atlas_income<-read.csv("income.csv", header=TRUE)
gdp<-read.csv("gdp_bea_county_12_16.csv", header=TRUE, skip=4)

Variables

After importing the raw CSV files, each dataset was cleaned and prepped for linkage. The final analytical cohort contains two records per county (i.e., FIPS code), one for 2012 and another for 2016. Due to a lack of 2016 surgical data available on the Dartmouth Atlas website, the surgical discharge and surgical workforce data were lagged by one year (i.e., surgical discharges from 2011 were linked to election results from 2012, and similarly 2015 surgical discharges linked to the 2016 election). Therefore, the surgical discharges represent surgical utilization in the year prior to each Presidential election. Normality of confounding variables was checked and log-transformed, as necessary. The variables used from each data source are listed below, followed by the R code used to clean the datasets:

Dartmouth Atlas (Key independent variables of interest)
* AS_DIS: Adjusted Rate of Surgical Discharges per 1,000 Medicare Enrollees
* BS_DIS: Adjusted Rate of Back Surgery Discharges per 1,000 Medicare Enrollees
* CB_DIS: Adjusted Rate of Coronary Artery Bypass Graft (CABG) Surgery Discharges per 1,000 Medicare Enrollees
* TB_DIS: Adjusted Rate of TURP for BPH Surgery Discharges per 1,000 Medicare Enrollees
* FH_DIS: Adjusted Rate of Hip Fracture Surgery Discharges per 1,000 Medicare Enrollees

MIT Election Lab
* % of Republican vote shares (third parties removed) for the 2012 & 2016 Presidential Election (Outcome)
* Prior Vote Share: % Republican vote share from the most recent prior Presidential election (Confounder/adjustment variable)

Surgical Workforce (Counfounder/adjustment variable)
* Number of Surgeons per 100,000 Population

County Rankings (Confounder/adjustment variables)
* % Fair/Poor Health
* % High School Graduates
* % Unemployed * % Age 65 and Over * % Non-Hispanic Black
* % Rural
* % Uninsured
* Total Population
* Median Income

Rural Atlas (Confounder/adjustment variable)
* % Poverty

Bureau of Economic Analysis (Confounder/adjustment variable)
* % change in GDP from prior year

# ***** Generate "clean" versions of raw CSV datasets to include only records relevant to this analysis *****

# DARTMOUTH ATLAS
# Negative values indicate low-precision values due to sample size -- all values are converted to absolute values but the
# negative rows are flagged accordingly for filtering & testing later
# Make FIPS variable a 5-digit string for linking
# Replace all 999999 values with NA
surg_dis<-dartmouth %>%
  filter(Eventname %in% c("AS_DIS", "BS_DIS", "CB_DIS", "TB_DIS","FH_DIS"),
         Year %in% c(2011,2015),
         Race=="Overall",
         Gender=="All") %>%
  dplyr::select(Geo_Code, Eventname, Adjusted_Rate, Year) %>%
  spread(Eventname, Adjusted_Rate) %>%
  rename(fips=Geo_Code,
         adj_surg_rate=AS_DIS,
         adj_back_surg_rate=BS_DIS,
         adj_cabg_surg_rate=CB_DIS,
         adj_turp_surg_rate=TB_DIS,
         adj_hipfx_surg_rate=FH_DIS,
         surg_year=Year) %>%
  mutate(surg_neg=ifelse(adj_surg_rate<0,1,0),
         back_neg=ifelse(adj_back_surg_rate<0,1,0),
         cabg_neg=ifelse(adj_cabg_surg_rate<0,1,0), 
         turp_neg=ifelse(adj_turp_surg_rate<0,1,0),
         hipfx_neg=ifelse(adj_hipfx_surg_rate<0,1,0)) %>%
  mutate(fips=str_pad(fips, 5, pad = "0"),
         adj_surg_rate=round(abs(adj_surg_rate),digits=1),
         adj_back_surg_rate=round(abs(adj_back_surg_rate),digits=1),
         adj_cabg_surg_rate=round(abs(adj_cabg_surg_rate),digits=1),
         adj_turp_surg_rate=round(abs(adj_turp_surg_rate),digits=1),
         adj_hipfx_surg_rate=round(abs(adj_hipfx_surg_rate),digits=1),
         merge_year=ifelse(surg_year==2011,2012,2016)) %>%
  mutate_at(vars(adj_surg_rate,
                 adj_back_surg_rate,
                 adj_cabg_surg_rate,
                 adj_turp_surg_rate,
                 adj_hipfx_surg_rate),
            ~ replace(., . == 99999, NA)) %>%
  filter(adj_surg_rate>=0)


# ELECTION
# Pull 2008, 2012, and 2016 Presidential Election data and generate Republican percent (r_pct) values for each year
# Make FIPS variable a 5-digit string for linking
elect_tmp<-election %>%
  filter(year %in% c(2008,2012,2016),
         party %in% c("republican","democrat"),
         !is.na(FIPS),
         !is.na(candidatevotes)) %>%
  select(FIPS, party, candidatevotes, year) %>%
  rename(fips=FIPS) %>%
  spread(party, candidatevotes) %>%
  mutate(fips=str_pad(fips, 5, pad = "0"),
         r_pct=republican/(republican+democrat)) %>%
  select(fips,year,r_pct)

# 2008 election data is used as "prior vote share" for 2012 election
elect_2012<-elect_tmp %>%
  filter(year %in% c(2008,2012)) %>%
  spread(year, r_pct) %>%
  rename(past_vote_share="2008",
         r_pct="2012") %>%
  mutate(elect_year=2012,
         merge_year=2012,
         past_vote_share=round(past_vote_share*100,digits=1),
         r_pct=round(r_pct*100,digits=1))

# 2012 election data is used as "prior vote share" for 2016 election
elect_2016<-elect_tmp %>%
  filter(year %in% c(2012,2016)) %>%
  spread(year, r_pct) %>%
  rename(past_vote_share="2012", r_pct="2016") %>%
  mutate(elect_year=2016,
         merge_year=2016,
         past_vote_share=round(past_vote_share*100,digits=1),
         r_pct=round(r_pct*100,digits=1))

# Append 2012 & 2016 election data into single dataset with their respective prior vote shares intact
elect_final<-rbind(elect_2012,elect_2016)

# COUNTY RANKINGS
# Append data from County Rankings from 2012 & 2016
cty_rank_all<-dplyr::bind_rows(cty_rank_2012, cty_rank_2016)

# Rename & multiply rates by 100 for more intuitive analysis
# Make FIPS variable a 5-digit string for linking
cty_rank_all_clean<-cty_rank_all %>%
  mutate(fipscode=as.character(fipscode),
         fips=str_pad(fipscode, 5, pad = "0"),
         v002_rawvalue=v002_rawvalue*100,
         v021_rawvalue=v021_rawvalue*100,
         v023_rawvalue=v023_rawvalue*100,
         v053_rawvalue=v053_rawvalue*100,
         v054_rawvalue=v054_rawvalue*100,
         v058_rawvalue=v058_rawvalue*100,
         v085_rawvalue=v085_rawvalue*100,
         v051_rawvalue=round(v051_rawvalue,digits=0),
         v063_rawvalue=round(v063_rawvalue,digits=0),
         cty_year=year) %>%
  rename(pct_fairpoor=v002_rawvalue,
         pct_hsgrad=v021_rawvalue, 
         pct_unemp=v023_rawvalue,
         pct_65plus=v053_rawvalue,
         pct_nhblack=v054_rawvalue,
         pct_rural=v058_rawvalue,
         pct_uninsured=v085_rawvalue,
         tot_pop=v051_rawvalue,
         med_income=v063_rawvalue,
         merge_year=year) %>%
  dplyr::select(fips, pct_fairpoor, pct_hsgrad, pct_unemp, pct_65plus, pct_nhblack, pct_rural, pct_uninsured, tot_pop, med_income,
                cty_year, merge_year)


# OBTAIN SURGEONS PER 100K POPULATION FOR YEARS 2011 & 2015 (PROXY FOR SURGEON WORKFORCE AND LOCAL ACCESS TO SURGERY)
# Append data from County Rankings from 2011 & 2015 solely to get total population values for surgeon workforce rates
cty_rank_1115<-dplyr::bind_rows(cty_rank_2011, cty_rank_2015) %>%
  mutate(fipscode=as.character(fipscode),
         fips=str_pad(fipscode, 5, pad = "0"),
         v051_rawvalue=round(v051_rawvalue,digits=0)) %>%
  rename(tot_pop=v051_rawvalue) %>%
  select(fips,tot_pop,year)

# Clean and append surgeon NPIs per year
# Taxonomies that begin with "2086" indicate physicians with a Surgery specialty
# Basically this code gets a list of all surgeons for each year with their corresponding FIPS code (via zipcode xwalk)
npi_ptax2086_2011_clean<-npi_ptax2086_2011 %>%
  filter(substr(ptaxcode,1,4)=="2086") %>%
  select(npi) %>%
  inner_join(npi_entity1_2011) %>%
  inner_join(npi_pzip_2011) %>%
  mutate(ploczip=substr(ploczip,1,5),
         year=2011) %>%
  inner_join(zip_to_fips) %>%
  select(-ploczip) %>%
  distinct(npi, .keep_all=TRUE)

npi_ptax2086_2015_clean<-npi_ptax2086_2015 %>%
  filter(substr(ptaxcode,1,4)=="2086") %>%
  select(npi) %>%
  inner_join(npi_entity1_2015) %>%
  inner_join(npi_pzip_2015) %>%
  mutate(ploczip=substr(ploczip,1,5),
         year=2015) %>%
  inner_join(zip_to_fips) %>%
  select(-ploczip) %>%
  distinct(npi, .keep_all=TRUE)

# Calculate # of surgeons per 100K total population
# Defaulted counties with no surgeons to 0.01 (to accommodate potential log transformation later -- avoiding zeroes)
surgeons_per_totpop<-dplyr::bind_rows(npi_ptax2086_2011_clean, npi_ptax2086_2015_clean) %>%
  count(fips, state, year) %>%
  right_join(cty_rank_1115) %>%
  filter(substr(fips,3,5)!="000") %>%
  mutate_at(vars(n), ~replace(., is.na(.), 0.01)) %>%
  mutate(surgeons_per1kpop=round((n/tot_pop)*100000,digits=2),
         merge_year=ifelse(year==2011,2012,2016)) %>%
  select(fips,state, merge_year,surgeons_per1kpop)


# RURAL ATLAS
# Make FIPS variable a 5-digit string for linking
rural_atlas_income_clean<-rural_atlas_income %>%
  mutate(fips=str_pad(FIPS, 5, pad = "0")) %>%
  dplyr::select(fips, PovertyAllAgesPct)

# BUREAU OF ECONOMIC ANALYSIS
# Make FIPS variable a 5-digit string for linking
# Remove all missing values
gdp_clean<-gdp %>%
  rename(fips=GeoFips,y2012=X2011.2012, y2016=X2015.2016) %>%
  gather(year, pct_gdp_chg, y2012:y2016, factor_key=TRUE) %>%
  mutate(merge_year=ifelse(year=="y2012",2012,2016),
         pct_gdp_chg=as.numeric(pct_gdp_chg)) %>%
  dplyr::select(fips,merge_year,pct_gdp_chg) %>%
  filter(!is.na(pct_gdp_chg))


# MERGE INTO ANALYTICAL COHORT USING SURGICAL DISCHARGES AS PRIMARY DATASET
analytical_cohort<-surg_dis %>%
  left_join(elect_final) %>%
  left_join(cty_rank_all_clean) %>%
  left_join(rural_atlas_income_clean) %>%
  left_join(gdp_clean) %>%
  left_join(surgeons_per_totpop) %>%
  filter(!is.na(r_pct))

To assess normality of the confounding variables, I generated yearly histograms for each one and transformed as necessary.

analytical_cohort_hist<-analytical_cohort %>% select("merge_year","pct_gdp_chg","pct_fairpoor","pct_hsgrad", "pct_65plus", "pct_unemp","pct_nhblack","pct_rural","pct_uninsured","tot_pop","med_income","PovertyAllAgesPct","surgeons_per1kpop")

colNames <- names(analytical_cohort_hist[-1])
for(i in colNames){
    plot<-ggplot(data=analytical_cohort, aes_string(x=i)) +
    geom_histogram(bins=20, aes(y=..density..), colour="black", fill="white") +
    geom_density(alpha=.3, fill="#285778") +
    facet_grid(~merge_year)
    print(plot)
}
## Warning: Removed 103 rows containing non-finite values (stat_bin).
## Warning: Removed 103 rows containing non-finite values (stat_density).

## Warning: Removed 382 rows containing non-finite values (stat_bin).
## Warning: Removed 382 rows containing non-finite values (stat_density).

## Warning: Removed 467 rows containing non-finite values (stat_bin).
## Warning: Removed 467 rows containing non-finite values (stat_density).

## Warning: Removed 1 rows containing non-finite values (stat_bin).
## Warning: Removed 1 rows containing non-finite values (stat_density).

## Warning: Removed 3 rows containing non-finite values (stat_bin).
## Warning: Removed 3 rows containing non-finite values (stat_density).

Visually it looks like % Change in GDP, % H.S Grads, % Non-Hispanic Black, % Rural, Total Population, Median Income, and Surgeons per 100K Population are the biggest offenders. So I attempted a log transformation in hopes of achieving a more normal distribution:

# Perform log transformation for selected variables
# Note that % GDP Change contains negative values so I added a constant of 56 to each value (-56 is the largest negative value) to bring it to all positives
analytical_cohort<-analytical_cohort %>%
    mutate(merge_year=as.factor(merge_year), log_gdp=log(pct_gdp_chg+56), log_hsgrad=log(pct_hsgrad), log_nhblack=log(pct_nhblack), log_rural=log(pct_rural), log_pop=log(tot_pop), log_med_inc=log(med_income), log_surgper1k=log(surgeons_per1kpop))

colNames2 <- names(analytical_cohort[31:37])
for(i in colNames2){
    plot<-ggplot(data=analytical_cohort, aes_string(x=i)) +
    geom_histogram(bins=20, aes(y=..density..), colour="black", fill="white") +
    geom_density(alpha=.3, fill="#285778") +
    facet_grid(~merge_year)
    print(plot)
}
## Warning: Removed 103 rows containing non-finite values (stat_bin).
## Warning: Removed 103 rows containing non-finite values (stat_density).

## Warning: Removed 467 rows containing non-finite values (stat_bin).
## Warning: Removed 467 rows containing non-finite values (stat_density).

## Warning: Removed 53 rows containing non-finite values (stat_bin).
## Warning: Removed 53 rows containing non-finite values (stat_density).

## Warning: Removed 62 rows containing non-finite values (stat_bin).
## Warning: Removed 62 rows containing non-finite values (stat_density).

The distributions for Total Population and Median Income look better after log transformation so they were used in the statistical modeling. The Surgeons per 100K Population variable shows as bi-modal so I decided to keep it in its raw value.

Statistical Analysis

Multivariable linear regression was conducted using the following formula:

\[\Large RPct_{ij}=f(SU_{i,j-1},\ PVS_{j-4},\ SW_{i,j-1},\ GDP_{ij},\ Pov_i,\ CR_{ij},\ \eta_j)\]

where \(RPct_{ij}\) represents the Republican voting share (expressed as a proportion) in county \(i\) and year \(j\), \(SU_{i,j-1}\) refers to the surgical utilization rate in the year prior to the election, \(PVS_{j-4}\) represents a county’s past voting share from the prior presidential election, \(SW_{i,j-1}\) represents the surgeon workforce in the year prior to the election, \(GDP_{ij}\) represents a measure of economic growth, \(USDA_i\) is the % Poverty, \(CR_{i,j}\) are the Country Rankings predictors for the year of the election, and \(\eta_j\) is a binary indicator for year. The analysis will be repeated for the other surgical utilization variables. As recommended by one of my advisors, both the outcome (Republican %) and primary independent variable of interest (surgical utilization) were kept as continuous variables instead of converting to binary/categorical in order to preserve the granularity of the analysis.

Results

Across the 2 election years, there were a total of 6,151 observations (roughly 2 observations per county) used in the analytical cohort for this study. In the Dartmouth Atlas data, counties that had fewer than 26 events per year are flagged as “unreliable” due to small sample size. These are indicated by negative values in raw data. I created binary flags for all outcome variables deemed unreliable and converted the negative values to the absolute value, per the Dartmouth Atlas instructions. To both describe the overall dataset and observe any differences between the reliable and unreliable county estimates, I generated the following descriptive table (Table 1).

label(analytical_cohort$adj_surg_rate)    <- "Surgical Discharges per 1,000 Medicare Enrollees"
label(analytical_cohort$past_vote_share)  <- "% Republican Vote Share (Prior Election)"
label(analytical_cohort$merge_year)       <- "Election Year"
label(analytical_cohort$pct_gdp_chg)      <- "% GDP Change From Prior Year"
label(analytical_cohort$pct_fairpoor)     <- "% Fair/Poor Health"
label(analytical_cohort$pct_hsgrad)       <- "% High School Graduates"
label(analytical_cohort$pct_unemp)        <- "% Unemployed"
label(analytical_cohort$pct_nhblack)      <- "% Non-Hispanic Black"
label(analytical_cohort$pct_rural)        <- "% Rural"
label(analytical_cohort$pct_65plus)       <- "% Age 65 and Over"
label(analytical_cohort$pct_uninsured)    <- "% Uninsured"
label(analytical_cohort$tot_pop)          <- "Population"
label(analytical_cohort$med_income)       <- "Median Income"
label(analytical_cohort$PovertyAllAgesPct)<- "% Poverty"
label(analytical_cohort$r_pct)            <- "% Republican Vote Share"
label(analytical_cohort$surgeons_per1kpop)<-"Surgeons per 100,000 Population"

ac2 <- analytical_cohort %>%
  dplyr::select(adj_surg_rate, r_pct, past_vote_share, surgeons_per1kpop, pct_gdp_chg, pct_fairpoor, pct_65plus,
                                           pct_hsgrad, pct_unemp, pct_nhblack, pct_rural, pct_uninsured, tot_pop, 
                                           med_income, PovertyAllAgesPct, merge_year, surg_neg) %>%
  mutate(surg_neg=factor(surg_neg, labels=c("Reliable","Unreliable")))


ac2 %>% 
  tbl_summary(
    by = surg_neg,
    statistic = list(all_continuous() ~ "{mean} ({sd})",
                     all_categorical() ~ "{n} / {N} ({p}%)"),
    digits = all_continuous() ~ 1,
    missing="no"
  ) %>%
  add_p(pvalue_fun = ~style_pvalue(.x, digits = 2)) %>%
  add_overall() %>%
  modify_spanning_header((c("stat_1", "stat_2") ~ "**Data Reliability**")) %>% 
  as_gt() %>% 
  gt::tab_header("Table 1. County-Level Characteristics by Data Reliability Status Due to Sample Size") %>% 
  opt_align_table_header(align = "left")
Table 1. County-Level Characteristics by Data Reliability Status Due to Sample Size
Characteristic Overall, N = 6,1511 Data Reliability p-value2
Reliable, N = 6,0041 Unreliable, N = 1471
Surgical Discharges per 1,000 Medicare Enrollees 82.0 (13.2) 82.0 (12.9) 83.6 (20.7) 0.85
% Republican Vote Share 63.5 (15.8) 63.2 (15.6) 76.9 (16.0) <0.001
% Republican Vote Share (Prior Election) 59.1 (14.5) 58.8 (14.3) 71.3 (16.1) <0.001
Surgeons per 100,000 Population 7.3 (10.6) 7.5 (10.6) 1.7 (6.5) <0.001
% GDP Change From Prior Year 0.8 (9.8) 0.8 (9.4) 2.4 (20.8) 0.10
% Fair/Poor Health 16.9 (5.3) 16.9 (5.3) 15.2 (5.5) <0.001
% Age 65 and Over 16.6 (4.4) 16.6 (4.3) 19.6 (5.6) <0.001
% High School Graduates 83.3 (9.4) 83.3 (9.4) 88.9 (14.6) <0.001
% Unemployed 7.7 (3.1) 7.8 (3.1) 5.0 (2.7) <0.001
% Non-Hispanic Black 9.2 (14.3) 9.3 (14.4) 3.8 (11.0) <0.001
% Rural 58.7 (31.1) 57.8 (30.8) 96.8 (15.0) <0.001
% Uninsured 17.8 (5.6) 17.7 (5.5) 22.4 (6.5) <0.001
Population 101,575.2 (323,496.9) 104,004.1 (327,056.4) 2,369.0 (1,891.4) <0.001
Median Income 45,028.7 (11,548.2) 45,046.2 (11,587.1) 44,312.2 (9,836.8) 0.97
% Poverty 15.2 (6.0) 15.1 (6.0) 15.2 (6.9) 0.37
Election Year <0.001
2012 3,085 / 6,151 (50%) 3,042 / 6,004 (51%) 43 / 147 (29%)
2016 3,066 / 6,151 (50%) 2,962 / 6,004 (49%) 104 / 147 (71%)

1 Statistics presented: Mean (SD); n / N (%)

2 Statistical tests performed: Wilcoxon rank-sum test; chi-square test of independence

Not surprisingly, due to the criteria for reliability which was based on small sample sizes, the “unreliable” estimates appear to be mostly from counties with significantly smaller populations, greater rurality, and lesser access to within-county surgeons. It should also be noted that, while the “unreliable” counties had significantly higher Republican voting shares, the surgical utilization rates showed no significant difference. Lastly, 71% of the unreliable counties were from the 2016 cohort which is consistent with the Dartmouth Atlas report that surgical utilization has declined over time, likely causing more counties to have smaller, unreliable sample sizes.

County Maps

In order to better visualize any potential relationships between surgery utilization and voting results, I generated choropleth maps by US County for each year for Surgical Utilization Rates and Republican Voting %. While there are obvious differences between the graphs, you may note that the Midwest/South portion of the United States displays the largest collection of high surgical utilization counties (reddish color), a pattern even more pronounced in the corresponding election maps. This suggests a slight lean towards higher surgical rates in Republican counties, although there are still clear visual differences between the two metrics.

surg_dis_2012 <- surg_dis %>% filter(merge_year==2012, adj_surg_rate<160)
surg_dis_2016 <- surg_dis %>% filter(merge_year==2016)

usplot_surg_2012<-plot_usmap(data=surg_dis_2012, values="adj_surg_rate", regions = "counties", exclude=c("HI","AK")) + 
  labs(title = "Adjusted Rate of Surgical Discharges per 100K Medicare Enrollees by US County (2012)") + 
  theme(panel.background = element_rect(color=NA, fill = "white"), 
        plot.title = element_text(hjust = 0.5),
        plot.subtitle=element_text(hjust=0.5)) + 
  scale_fill_gradientn(colors=rev(RColorBrewer::brewer.pal(n = 11, name = "RdBu")),
                       name="Surg Rate")

usplot_surg_2016<-plot_usmap(data=surg_dis_2016, values="adj_surg_rate", regions = "counties", exclude=c("HI","AK")) + 
  labs(title = "Adjusted Rate of Surgical Discharges per 100K Medicare Enrollees by US County (2016)") + 
  theme(panel.background = element_rect(color=NA, fill = "white"), 
        plot.title = element_text(hjust = 0.5),
        plot.subtitle=element_text(hjust=0.5)) + 
  scale_fill_gradientn(colors=rev(RColorBrewer::brewer.pal(n = 11, name = "RdBu")),
                       name="Surg Rate")


usplot_elect_2012<-plot_usmap(data=elect_2012,
                              values="r_pct",
                              regions = "counties",
                              exclude=c("HI","AK")) +
                   labs(title = "Republican Voting % by US County (2012)") +
                   theme(panel.background = element_rect(color=NA, fill = "white"),
                   plot.title = element_text(hjust = 0.5)) +
                   scale_fill_gradientn(colors=rev(RColorBrewer::brewer.pal(n = 11, name = "RdBu")),
                                        name="Reublican %")

usplot_elect_2016<-plot_usmap(data=elect_2016,
                              values="r_pct",
                              regions = "counties",
                              exclude=c("HI","AK")) +
                   labs(title = "Republican Voting % by US County (2016)") +
                   theme(panel.background = element_rect(color=NA, fill = "white"),
                   plot.title = element_text(hjust = 0.5)) +
                   scale_fill_gradientn(colors=rev(RColorBrewer::brewer.pal(n = 11, name = "RdBu")),
                                        name="Reublican %")

usplot_surg_2012

usplot_elect_2012

usplot_surg_2016

usplot_elect_2016

Regression Results

Multiple models were generated to track the performance of surgical utilization across multiple scenarios and sensitivity analyses (Table 2).

models<-list()
models[['1.Univariate']] <-lm(data=analytical_cohort, r_pct ~ adj_surg_rate)
models[['2.Multivariable: Prior Vote Share Excluded']]<-lm(data=analytical_cohort,
                                                         r_pct ~ adj_surg_rate + 
                                                           surgeons_per1kpop + 
                                                           pct_gdp_chg + 
                                                           pct_fairpoor + 
                                                           pct_65plus + 
                                                           pct_hsgrad + 
                                                           pct_unemp + 
                                                           pct_nhblack + 
                                                           pct_rural + 
                                                           pct_uninsured + 
                                                           log_pop + 
                                                           log_med_inc + 
                                                           PovertyAllAgesPct + 
                                                           merge_year)
models[['3.Multivariable: All Surgeries']]           <-lm(data=analytical_cohort, 
                                                        r_pct ~ adj_surg_rate + 
                                                          past_vote_share + 
                                                          surgeons_per1kpop + 
                                                          pct_gdp_chg + 
                                                          pct_fairpoor + 
                                                          pct_65plus + 
                                                          pct_hsgrad + 
                                                          pct_unemp + 
                                                          pct_nhblack + 
                                                          pct_rural + 
                                                          pct_uninsured + 
                                                          log_pop + 
                                                          log_med_inc + 
                                                          PovertyAllAgesPct + 
                                                          merge_year)
models[['4.Sensitivity Model1']]                    <-lm(data=analytical_cohort, 
                                                       r_pct ~ adj_surg_rate + 
                                                         past_vote_share + 
                                                         surgeons_per1kpop + 
                                                         pct_gdp_chg + 
                                                         pct_65plus + 
                                                         pct_unemp + 
                                                         pct_nhblack + 
                                                         pct_rural + 
                                                         pct_uninsured + 
                                                         log_pop + 
                                                         log_med_inc + 
                                                         PovertyAllAgesPct + 
                                                         factor(merge_year))
analytical_cohort_noneg<-analytical_cohort %>%
  filter(surg_neg==0)
models[['5.Sensitivity Model2']]                    <-lm(data=analytical_cohort_noneg, 
                                                       r_pct ~ adj_surg_rate + 
                                                         past_vote_share + 
                                                         surgeons_per1kpop + 
                                                         pct_gdp_chg + 
                                                         # pct_fairpoor +
                                                         pct_65plus + 
                                                         # pct_hsgrad + 
                                                         pct_unemp + 
                                                         pct_nhblack + 
                                                         pct_rural + 
                                                         pct_uninsured + 
                                                         log_pop + 
                                                         log_med_inc + 
                                                         PovertyAllAgesPct + 
                                                         factor(merge_year))

msummary(models,
             statistic = 'p.value',
             coef_map=c('adj_surg_rate'='Surgical Discharges per 1,000 Medicare Enrollees',
                        'past_vote_share'="Previous Election Republican Vote %",
                        'surgeons_per1kpop'="Surgeons per 100,000 Population",
                        'pct_gdp_chg'="% 1-year GDP Change",
                        'pct_fairpoor'="% in Fair/Poor Health",
                        'pct_65plus'="% Age 65 and Over",
                        'pct_hsgrad'="% H.S. Graduate",
                        'pct_unemp'="% Unemployed",
                        'pct_nhblack'="% Non-Hispanic African-American",
                        'pct_rural'='% Rural',
                        'pct_uninsured'="% Uninsured",
                        'log_pop'="Log(Population)", 
                        'log_med_inc'="Log(Median Income)",
                        'PovertyAllAgesPct'="Poverty Rate, All Ages",
                        'state'="State",
                        'merge_year'="Election Year"),
             title="Table 2. Primary Linear Regression Results: Dependent Variable = % Republican Vote Share",
             notes = list('Sensitivity Model1 = Excludes % Fair/Poor Health and % HS Grad due to missingness.',
                          'Sensitivity Model2 = Excludes "unreliable" estimates + Sensivity Model1 variables.'))
Table 2. Primary Linear Regression Results: Dependent Variable = % Republican Vote Share
1.Univariate 2.Multivariable: Prior Vote Share Excluded 3.Multivariable: All Surgeries 4.Sensitivity Model1 5.Sensitivity Model2
Surgical Discharges per 1,000 Medicare Enrollees 0.167 0.322 0.046 0.036 0.043
(0.000) (0.000) (0.000) (0.000) (0.000)
Previous Election Republican Vote % 0.962 0.964 0.962
(0.000) (0.000) (0.000)
Surgeons per 100,000 Population -0.062 -0.012 -0.014 -0.013
(0.000) (0.013) (0.004) (0.008)
% 1-year GDP Change -0.029 -0.002 -0.001 -0.003
(0.117) (0.737) (0.775) (0.494)
% in Fair/Poor Health 0.354 0.006
(0.000) (0.674)
% Age 65 and Over -0.193 0.002 0.001 0.000
(0.000) (0.891) (0.947) (0.979)
% H.S. Graduate 0.113 0.031
(0.000) (0.000)
% Unemployed -0.675 0.079 0.045 0.041
(0.000) (0.000) (0.030) (0.050)
% Non-Hispanic African-American -0.350 -0.110 -0.111 -0.113
(0.000) (0.000) (0.000) (0.000)
% Rural 0.081 0.020 0.022 0.021
(0.000) (0.000) (0.000) (0.000)
% Uninsured 0.661 -0.215 -0.219 -0.214
(0.000) (0.000) (0.000) (0.000)
Log(Population) -2.004 -0.514 -0.445 -0.505
(0.000) (0.000) (0.000) (0.000)
Log(Median Income) -11.445 -7.527 -7.551 -7.381
(0.000) (0.000) (0.000) (0.000)
Poverty Rate, All Ages -0.771 -0.111 -0.115 -0.113
(0.000) (0.000) (0.000) (0.000)
Num.Obs. 6151 5230 5230 6047 5900
R2 0.019 0.499 0.951 0.952 0.952
R2 Adj. 0.019 0.497 0.951 0.952 0.952
AIC 51273.6 39856.4 27659.6 32115.7 31254.3
BIC 51293.7 39961.4 27771.1 32216.3 31354.5
Log.Lik. -25633.779 -19912.196 -13812.793 -16042.865 -15612.143
F 121.238 370.275 6793.891 9181.693 8908.784
Sensitivity Model2 = Excludes “unreliable” estimates + Sensivity Model1 variables.
Sensitivity Model1 = Excludes % Fair/Poor Health and % HS Grad due to missingness.

Univariate results showed a significant association between surgical utilization and Republican voting % (Model 1; \(\beta\)=0.167, p<0.001). In order to check the R2 prior to the addition of the prior vote share covariate (known to be the biggest predictor of current election vote share), Model 2 showed an R2 of 0.499. As expected, the R2 increased dramatically to 0.951 after prior vote share was added. The initial multivariable model demonstrated a significant relationship between surgical utilization and Republican voting share (Model3; \(\beta\)=0.046; p<0.001). A sensitivity analyses was conducted where the % Fair/Poor Health and % H.S Graduates variables were excluded due to significant missingness. The relationship between surgery utilization and Republican % remained significant despite these variables being removed (Model 4; \(\beta\)=0.036, p<0.001) and resulted in no loss of R2. Finally, a second sensitivity analysis was performed where counties with “unreliable” values were excluded in addition to the two variables from the prior sensitivity model. The positive association between surgery utilization and election results remained significant in the main model (Model 5; \(\beta\)=0.043, p=<0.001). Given that Model 5 had the best balance of R2 performance, number of observations, and reliable estimates, I considered these to be my final results for the primary analysis. They suggest that, after adjustment for prior vote share, surgical workforce, economic, and socioeconomic factors, each additional surgical discharge per 1,000 Medicare enrollees is significantly associated with an additional 0.043% Republican voting share in the following year’s Presidential election.

In order to test the secondary hypotheses, subset analyses were performed for TURP, Hip Fracture, Back, and CABG surgeries using the parameters from Model 5 above:

models2<-list()
analytical_cohort_turpnoneg<-analytical_cohort %>%
  filter(turp_neg==0)
analytical_cohort_backnoneg<-analytical_cohort %>%
  filter(back_neg==0)
analytical_cohort_hipfxnoneg<-analytical_cohort %>%
  filter(hipfx_neg==0)
analytical_cohort_cabgnoneg<-analytical_cohort %>%
  filter(cabg_neg==0)

models2[['TURP Surgery']]          <-lm(data=analytical_cohort_turpnoneg, 
                                     r_pct ~ adj_turp_surg_rate + 
                                       past_vote_share + 
                                       surgeons_per1kpop + 
                                       pct_gdp_chg + 
                                       # pct_fairpoor + 
                                       pct_65plus + 
                                       # pct_hsgrad + 
                                       pct_unemp + 
                                       pct_nhblack +
                                       pct_rural + 
                                       pct_uninsured + 
                                       log_pop + 
                                       log_med_inc + 
                                       PovertyAllAgesPct + 
                                       factor(merge_year))
models2[['Back Surgery']]          <-lm(data=analytical_cohort_backnoneg, 
                                     r_pct ~ adj_back_surg_rate + 
                                       past_vote_share + 
                                       surgeons_per1kpop + 
                                       pct_gdp_chg + 
                                       # pct_fairpoor + 
                                       pct_65plus + 
                                       # pct_hsgrad + 
                                       pct_unemp + 
                                       pct_nhblack + 
                                       pct_rural + 
                                       pct_uninsured + 
                                       log_pop + 
                                       log_med_inc + 
                                       PovertyAllAgesPct + 
                                       factor(merge_year))
models2[['Hip Fracture Surgery']]  <-lm(data=analytical_cohort_hipfxnoneg, 
                                     r_pct ~ adj_hipfx_surg_rate + 
                                       past_vote_share + 
                                       surgeons_per1kpop + 
                                       pct_gdp_chg + 
                                       # pct_fairpoor + 
                                       pct_65plus + 
                                       # pct_hsgrad + 
                                       pct_unemp + 
                                       pct_nhblack + 
                                       pct_rural + 
                                       pct_uninsured + 
                                       log_pop + 
                                       log_med_inc + 
                                       PovertyAllAgesPct + 
                                       factor(merge_year))
models2[['CABG Surgery']]         <-lm(data=analytical_cohort_cabgnoneg, 
                                     r_pct ~ adj_cabg_surg_rate + 
                                       past_vote_share + 
                                       surgeons_per1kpop + 
                                       pct_gdp_chg + 
                                       # pct_fairpoor + 
                                       pct_65plus + 
                                       # pct_hsgrad + 
                                       pct_unemp +
                                       pct_nhblack + 
                                       pct_rural + 
                                       pct_uninsured + 
                                       log_pop + 
                                       log_med_inc + 
                                       PovertyAllAgesPct + 
                                       factor(merge_year))

modelsummary(models2,
             statistic = 'p.value',
             coef_omit = 'fips',
             coef_map=c('adj_hipfx_surg_rate'='Discharges per 1,000 Medicare Enrollees',
                        'adj_turp_surg_rate'='Discharges per 1,000 Medicare Enrollees',
                        'adj_cabg_surg_rate'='Discharges per 1,000 Medicare Enrollees',
                        'adj_back_surg_rate'='Discharges per 1,000 Medicare Enrollees',
                        'past_vote_share'="Previous Election Republican Vote %",
                        'surgeons_per1kpop'="Surgeons per 100,000 Population",
                        'pct_gdp_chg'="1-year GDP Increase",
                        'pct_fairpoor'="% in Fair/Poor Health",
                        'pct_65plus'="% Age 65 and Over",
                        'pct_hsgrad'="% H.S. Graduate",
                        'pct_unemp'="% Unemployed",
                        'pct_nhblack'="% Non-Hispanic African-American",
                        'pct_rural'='% Rural',
                        'pct_uninsured'="% Uninsured",
                        'log_pop'="Log(Population)", 
                        'log_med_inc'="Log(Median Income)",
                        'PovertyAllAgesPct'="Poverty Rate, All Ages",
                        'merge_year'="Election Year"),
             title="Table 3. Linear Regression Results (Procedure Subsets): Dependent Variable = % Republican Vote Share")
Table 3. Linear Regression Results (Procedure Subsets): Dependent Variable = % Republican Vote Share
TURP Surgery Back Surgery Hip Fracture Surgery CABG Surgery
Discharges per 1,000 Medicare Enrollees -0.077 0.070 0.124 0.351
(0.713) (0.182) (0.063) (0.008)
Previous Election Republican Vote % 1.032 0.999 0.991 0.989
(0.000) (0.000) (0.000) (0.000)
Surgeons per 100,000 Population 0.011 -0.018 -0.016 -0.015
(0.578) (0.020) (0.037) (0.081)
1-year GDP Increase 0.007 -0.046 -0.038 0.014
(0.903) (0.028) (0.014) (0.637)
% Age 65 and Over -0.038 0.059 0.062 0.105
(0.433) (0.011) (0.006) (0.000)
% Unemployed 0.147 0.006 0.018 0.000
(0.128) (0.882) (0.617) (0.997)
% Non-Hispanic African-American -0.007 -0.056 -0.070 -0.048
(0.703) (0.000) (0.000) (0.000)
% Rural -0.004 0.009 0.009 -0.008
(0.856) (0.113) (0.055) (0.317)
% Uninsured -0.051 -0.189 -0.190 -0.151
(0.185) (0.000) (0.000) (0.000)
Log(Population) -0.602 -0.515 -0.616 -0.595
(0.073) (0.000) (0.000) (0.000)
Log(Median Income) -5.009 -8.363 -8.129 -7.176
(0.002) (0.000) (0.000) (0.000)
Poverty Rate, All Ages -0.330 -0.172 -0.171 -0.176
(0.000) (0.000) (0.000) (0.000)
Num.Obs. 207 1828 2246 1116
R2 0.972 0.954 0.949 0.956
R2 Adj. 0.970 0.953 0.949 0.956
AIC 952.4 9541.7 11827.4 5728.9
BIC 1002.4 9624.4 11913.2 5804.1
Log.Lik. -461.188 -4755.846 -5898.717 -2849.438
F 507.738 2870.950 3222.625 1855.867

The results from Table 3 suggest that, among the procedures studied, CABG utilization rates are the only significant predictor of Republican voting % (\(\beta\)=0.351, p<0.001), while hip fractures, back, and TURP procedure utilization does not show an association with election results. This is in contrast to my hypotheses that more “elective” surgeries with less variation, like back and TURP procedures, would demonstrate a positive relationship with Republican voting share. Hip fractures were the only procedure that adhered to my original hypothesis that they would not have a significant relationship with election results. However, it should be noted that they were on the cusp of achieving significance (\(\beta\)=0.124, p=0.063).

Discussion

Overall, the positive associations detected between overall surgical utilization and Republican voting share were consistent across all of my primary models, including various sensitivity analyses. Although the effect seen was quite small, the recent 2020 Presidential election demonstrated that even small fractional shares of votes can be very important to overall election results. Of course there is no causality at play in this analysis so these findings don’t suggest that additional surgeries will actually result in additional Republican votes, but they do suggest that there may be a minor political connection to surgical decision-making after adjustment for other known factors. The procedure-based results were mostly contrary to my original hypotheses and require further investigation. One of my advisors suggested that the (relatively) high CABG results may simply be a manifestation of the “Stroke Belt”,10 which describes an area throughout the Midwestern and Southern states that have consistently demonstrated higher rates of stroke in the United States (and, thus, likely other cardiovascular issues). For future analyses, I would like to experiment with expanding the surgical workforce metrics beyond the county level such as Hospital Referral Regions (HRR) or Hospital Service Areas (HSA), researching and employing additional county-level variables to better control for regional surgical needs (e.g., the Stroke Belt), and potentially incorporating geographically weighted regression (GWR) techniques to better account for regional similarities.

References

1. Surgeries in Hospital-Based Ambulatory Surgery and Hospital Inpatient Settings, 2014 #223. https://hcup-us.ahrq.gov/reports/statbriefs/sb223-Ambulatory-Inpatient-Surgeries-2014.jsp.

2. Weiss, A. J. Characteristics of Operating Room Procedures in U.S. Hospitals, 2011. 12.

3. Cohen, M. E., Liu, Y., Ko, C. Y. & Hall, B. L. Improved Surgical Outcomes for ACS NSQIP Hospitals Over Time: Evaluation of Hospital Cohorts With up to 8 Years of Participation. Annals of Surgery 263, 267–273 (2016).

4. Smith, R. Dartmouth Atlas of Health Care. BMJ 342, d1756–d1756 (2011).

5. Keele, L., Sharoky, C. E., Sellers, M. M., Wirtalla, C. J. & Kelz, R. R. An Instrumental Variables Design for the Effect of Emergency General Surgery. Epidemiologic Methods 7, (2018).

6. Birkmeyer, J. D. et al. Understanding of regional variation in the use of surgery. The Lancet 382, 1121–1129 (2013).

7. Hersh, E. D. & Goldenberg, M. N. Democratic and Republican physicians provide different care on politicized health issues. Proc Natl Acad Sci USA 113, 11811–11816 (2016).

8. Sanger-Katz, M. Your Surgeon Is Probably a Republican, Your Psychiatrist Probably a Democrat (Published 2016). The New York Times (2016).

9. Johnson, D. D. P., McDermott, R., Cowden, J. & Tingley, D. Dead certain: confidence and conservatism predict aggression in simulated international crisis decision-making. Human Nature (Hawthorne, N.Y.) 23, 98–126 (2012).

10. Twenty Years of Progress Toward Understanding the Stroke Belt. https://www.ahajournals.org/doi/epub/10.1161/STROKEAHA.119.024155 doi:10.1161/STROKEAHA.119.024155.